package
{
	/**
	 * Classe gestion de la partie
	 * @author anthony & oussama
	 */
	public class Partie
	{
		public var score:uint;
		public var nbrDeVie:uint;
		public var pseudo:String;
		
		public var niveauCourant:int;
		public var nbMaxNiveaux:int;
		public var mapCourante:Map = null;
		
		public var tabFantome:Array;
		
		public var main:Main;
		public var maps:Maps;
		
		public function Partie(main:Main)
		{
			this.main = main;
			this.maps = new Maps();
			this.nbMaxNiveaux = maps.listMap.length;
			trace("nb niveaux=" + nbMaxNiveaux);
			
			tabFantome = new Array();
			
			this.score = 0;
			this.nbrDeVie = 3;
			this.niveauCourant = 0;
			this.pseudo = "Joueur 1";
		}
		
		private function enleverMap():void
		{
			if (mapCourante != null)
				main.stage.removeChild(mapCourante);
		}
		
		public function startMap(numNiveau:int = 0):void
		{
			//enleverMap();
			
			mapCourante = maps.getMapAt(numNiveau);
			mapCourante.charger();
				
			mapCourante.x = 27;
			mapCourante.y = 40;
			main.stage.addChild(mapCourante);
			
			main.texteLevel.text = mapCourante.nomNiveau;
		}
		
		public function partieTermine():Boolean
		{
			return nbrDeVie == 0;
		}
		
		public function setPause(enPause:Boolean):void
		{
			// TODO : arrêtre pacman, fantomes, etc ...
		}
		
		public function resetPartie():void
		{
			// TODO : reinitialiser map, scores, vies, ...
			enleverMap();
			this.score = 0;
			this.nbrDeVie = 3;
			this.niveauCourant = 0;
		}
		
		/**
		 * outils score : calcul de score de la partie
		 * plusGome: pacman obtient Gomme (10point)
		 * plusSuperGome : pacman obtent un bonus Spécial (50points)
		 * plusFontome : pacman tue un Fontôme (selon le nbr de fontome tué voir formule code)
		 * plusFruit : pacman obtient un fruit (300points)
		 */
		public function plusGomme():void {
			this.score = this.score + 10;
			updateTexteScore();
		}
		
		public function plusSuperGomme():void {
			this.score = this.score + 50;
			updateTexteScore();
		}
		
		public function plusFantome(nbrDeFontomeKill):void{
			this.score = this.score+((Math.pow(2,nbrDeFontomeKill))* 100);
			nbrDeFontomeKill = nbrDeFontomeKill + 1;
			updateTexteScore();
		}
		public function plusFruit():void {
			this.score = this.score +300;
			updateTexteScore();
		}
		
		private function updateTexteScore():void
		{
			main.getTexteScore().text = "Score : " + this.score;
		}
		
		public function niveauSuivant():void
		{
			if (niveauCourant < maps.listMap.length)
			{
				trace("niveau suivant");
				niveauCourant++;
				startMap(niveauCourant);
			}
		}
		
		public function niveauPrecedent():void
		{
			if (niveauCourant > 0)
			{
				trace("niveau precedent");
				niveauCourant--;
				startMap(niveauCourant);
			}
		}
		
	}

}